home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Extra Heft 12
/
Extra Heft12.bin
/
input64
/
11_86.d64
/
joytast.s
< prev
next >
Wrap
Text File
|
1995-08-17
|
4KB
|
183 lines
;***************************************
;* *
;* ╘┴╙╘┴╘╒╥ / ╩╧┘╙╘╔├╦┴┬╞╥┴╟┼ *
;* *
;* (W) 1986 BY ═ARTIN ╟EBHARDT *
;* *
;***************************************
;--------------------------------------
:STRFLG = $0D ;$FF: ╙TRING
:INTFLG = $0E ;$80: ╔NTEGER
:VAR = $49 ;┌EIGER AUF ╓ARIABLE
:FAC = $61 ;╞LIESSKOMMAAKKU #1
:RPNT = $FB ;READPOINTER UND
:WPNT = $FD ;WRITEPOINTER FUER TRANSFER
:CIA1 = $DC00 ;├╔┴ 1:
:PRA = CIA1+0 ; ╨ORT ┴
:PRB = CIA1+1 ; ╨ORT ┬
:DDRA = CIA1+2 ; ─ATENRICHTUNG ╨.┴
:DDRB = CIA1+3 ; ─ATENRICHTUNG ╨.┬
:CHRGET = $0073
:CHRGOT = $0079
:ERROR = $A43A ;╞EHLERMELDUNG AUSGEBEN
:KOMMA = $AEFD ;PRUEFT AUF ╦OMMA
:GETVAR = $B08B ;HOLT ╓ARIABLENADRESSE NACH VAR
:SETFAC = $B3A2 ;Y-╥EGISTER NACH FAC
:GETBYT = $B79B ;┬YTEWERT NACH X HOLEN
:STOREFAC = $BBD0 ;FAC NACH ╓ARIABLE SCHREIBEN
;--------------------------------------
;┬┴╙╔├-╚EADER
;------------
ORG $0801 ;ORG-BASIC
W ZERO3 ;LINK-POINTER
W 1986 ;ZEILEN-NO
B $9E ;SYS-TOKEN
B "2127:"
B $8F ;REM-TOKEN
B $22 ;"
B "JOYTAST (C) INPUT 64 "
B "DURCH ╥╒╬ PROGRAMM NACH 53000 KOPIEREN!"
B $22 ;"
:ZERO3 B 0,0,0
;╓ERSCHIEBE-╥OUTINE
;------------------
:BEGIN LDA #<CODE ;LOW- UND
LDY #>CODE ;HIGH-ADRESS
STA RPNT ;VON QUELLE
STY RPNT+1 ;UEBERGEBEN
LDA #<START
LDY #>START ;DITO
STA WPNT ;FUER
STY WPNT+1 ;ZIEL
LDX #BLOCKS ;BLOCKANZAHL LADEN
LDY #00 ;CLR BYTE-COUNTER
:TRLOP LDA (RPNT),Y ;LOAD AND
STA (WPNT),Y ;STORE BYTES
INY ;BIS ZUM
BNE TRLOP ;PAGE-ENDE
INC RPNT+1 ;ZEIGER-HIGH
INC WPNT+1 ;ERHOEHEN
DEX ;EVTL.
BNE TRLOP ;NAECHSTE PAGE
RTS ;ZUM ┬┴╙╔├
:CODE = *
;╨ROGRAMMSTART
;-------------
ORG 53000
:START JSR KOMMA
JSR GETVAR
STA VAR
STY VAR+1
LDA STRFLG
ORA INTFLG
BEQ WEITER
LDX #22 ;╘┘╨┼ ═╔╙═┴╘├╚
JMP ERROR ;┼╥╥╧╥
:WEITER JSR CHRGOT ;LETZTES ┌EICHEN
CMP #$2C ;╦OMMA?
BNE WARTEN ;==>KEIN ╞LAG
JSR GETBYT
CPX #0 ;ODER ╞LAG =0:
BEQ WARTEN ;==> WARTEN
;NICHT WARTEN
;------------
JSR TAST ;├ODE IN Y
:FERTIG JSR SETFAC
JSR STOREFAC ;IN ╓ARIABLE SCHREIBEN
RTS ;┼╬─┼
;WARTEN, BIS ╘ASTE GEDRUECKT
;---------------------------
:WARTEN JSR TAST
CPY #1
BEQ WARTEN
JMP FERTIG
;╘ASTATURABFRAGE
;---------------
:TAST PHP ;STATUS RETTEN
SEI ;INTERRUPT SPERREN
LDA DDRA ;─ATENRICHTUNG RETTEN
PHA
LDA DDRB
PHA
LDA #$FF ;UND NEU SETZEN
STA DDRA
LDA #$00
STA DDRB
;
LDX #$7F ;FUER ╙TOP-┴BFRAGE ERMOEGLICHEN
LDY #5
:LOOP DEY
BMI RAUS ;KEINE ╘ASTE ==>RAUS
INC DDRA
LDA PRA ;╩OYSTICK ?
DEC DDRA
CMP TABJ,Y
BEQ RAUS ;JA, DANN RAUS
LDA TABA,Y ;┌EILE FUER ┴BFRAGE
STA PRA
LDA PRB ;╘ASTE?
STX PRA
CMP TABB,Y ;VERGLEICHEN
BNE LOOP ;NICHT GLEICH, DANN LOOP
;
:RAUS PLA ;─ATENRICHTUNG REKONSTRUIEREN
STA DDRB
PLA
STA DDRA
INY
INY
PLP
RTS ;╘ASTATURCODE WIRD
;IN Y UEBERGEBEN
;KEINE ╘ASTE: 1
;TABELLEN FUER ABFRAGE
:TABJ ;╩OYSTICK
B %11111110 ;OBEN
B %11111101 ;UNTEN
B %11110111 ;RECHTS
B %11111011 ;LINKS
B %11101111 ;FEUER
:TABA ;╘ASTATUR, ┌EILEN
B %11111101 ;A
B %11111101 ;Z
B %10111111 ;/
B %11011111 ;.
B %01111111 ;SPACE
:TABB ;╘ASTATUR, ╙PALTEN
B %11111011 ;SIEHE OBEN
B %11101111
B %01111111
B %11101111
B %11101111
;--------------------------------------
:CDEND = *-START
:BLOCKS := >CDEND
:LOW = <CDEND-CODE
IF LOW > 0
:BLOCKS := BLOCKS+1